// 引入基础依赖
import globals from "globals";
import pluginJs from "@eslint/js"; // 推荐的 JavaScript 规则
import tseslint from "typescript-eslint"; // 支持 TypeScript 的规则
import pluginVue from "eslint-plugin-vue"; // Vue 单文件组件支持
import prettierRecommended from "eslint-plugin-prettier/recommended"; // Prettier 集成插件

export default [
  // 1. 设置校验文件范围
  { files: ["**/*.{js,mjs,cjs,ts,vue,json,json5}"] },

  // 2. 设置忽略文件（ESLint v9 不再支持 .eslintignore）
  {
    ignores: ["**/node_modules", "**/.git", "**/dist", "**/vite.config.ts"]
  },

  // 3. 设置全局变量环境（浏览器 + Node.js）
  {
    languageOptions: {
      globals: {
        ...globals.browser,
        ...globals.node
      }
    }
  },

  // 4. 应用推荐的 JavaScript 规则
  pluginJs.configs.recommended,

  // 5. 应用 TypeScript 推荐规则
  ...tseslint.configs.recommended,

  // 6. 应用 Vue 基础规则
  ...pluginVue.configs["flat/essential"],

  // 7. 为 Vue 文件单独设置 TypeScript 解析器
  {
    files: ["**/*.vue"],
    languageOptions: {
      parserOptions: {
        parser: tseslint.parser // 使用 TypeScript 解析器
      }
    }
  },

  // 8. 自定义项目专属规则
  {
    rules: {
      // 控制台输出允许使用，但标记为警告
      "no-console": "warn",
      // 允许单单词命名 Vue 组件
      "vue/multi-word-component-names": "off",
      // 禁止使用 var，强制使用 let 或 const
      "no-var": "error",
      // 禁止尾随逗号
      "comma-dangle": ["error", "never"], 
// 控制逗号前后空格
      "comma-spacing": "error",           
      'no-unused-vars': ['warn'], // 仅警告，不报错
      '@typescript-eslint/no-unused-vars': ['warn'], // 对于 TS 项目，使用 @typescript-eslint/no-unused-vars 替代默认的 no-unused-vars
      // 强制使用单引号
      "quotes": ["error", "single"],
      'comma-dangle': ['error', 'always-multiline'], // 对象、数组等末尾保留逗号（多行时）
    },
      
  },

  // 9. 使用 Prettier 覆盖 ESLint 格式化规则（需放最后）
  prettierRecommended
];

